home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume27 / dmake / part37 < prev    next >
Encoding:
Text File  |  1992-01-29  |  40.0 KB  |  1,346 lines

  1. Newsgroups: comp.sources.misc
  2. From: dvadura@plg.waterloo.edu (Dennis Vadura)
  3. Subject:  v27i138:  dmake - dmake Version 3.8, Part37/41
  4. Message-ID: <1992Jan29.165139.1724@sparky.imd.sterling.com>
  5. X-Md4-Signature: 7905b620c26645c45918825ecdc644b5
  6. Date: Wed, 29 Jan 1992 16:51:39 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: dvadura@plg.waterloo.edu (Dennis Vadura)
  10. Posting-number: Volume 27, Issue 138
  11. Archive-name: dmake/part37
  12. Environment: Atari-ST, Coherent, Mac, MSDOS, OS/2, UNIX
  13. Supersedes: dmake: Volume 19, Issue 22-58
  14.  
  15. ---- Cut Here and feed the following to sh ----
  16. # this is dmake.shar.37 (part 37 of a multipart archive)
  17. # do not concatenate these parts, unpack them in order with /bin/sh
  18. # file dmake/unix/coherent/vfprintf.c continued
  19. #
  20. if test ! -r _shar_seq_.tmp; then
  21.     echo 'Please unpack part 1 first!'
  22.     exit 1
  23. fi
  24. (read Scheck
  25.  if test "$Scheck" != 37; then
  26.     echo Please unpack part "$Scheck" next!
  27.     exit 1
  28.  else
  29.     exit 0
  30.  fi
  31. ) < _shar_seq_.tmp || exit 1
  32. if test -f _shar_wnt_.tmp; then
  33. sed 's/^X//' << 'SHAR_EOF' >> 'dmake/unix/coherent/vfprintf.c' &&
  34. X        case 'X':
  35. #ifdef UNSIGNEDSPECIAL
  36. X            *tp++ = c;
  37. X            *tp = '\0';
  38. #ifndef LONGINT
  39. X            if(longflag)
  40. X            count += fprintf(dest, tempfmt, va_arg(args, unsigned long));
  41. X            else
  42. #endif
  43. X            count += fprintf(dest, tempfmt, va_arg(args, unsigned));
  44. X            break;
  45. #endif
  46. X        case 'd':
  47. X        case 'c':
  48. X        case 'i':
  49. X            *tp++ = c;
  50. X            *tp = '\0';
  51. #ifndef LONGINT
  52. X            if(longflag)
  53. X            count += fprintf(dest, tempfmt, va_arg(args, long));
  54. X            else
  55. #endif
  56. X            count += fprintf(dest, tempfmt, va_arg(args, int));
  57. X            break;
  58. X        case 'f':
  59. X        case 'e':
  60. X        case 'E':
  61. X        case 'g':
  62. X        case 'G':
  63. X            *tp++ = c;
  64. X            *tp = '\0';
  65. X            count += fprintf(dest, tempfmt, va_arg(args, double));
  66. X            break;
  67. X        case 'p':
  68. X            *tp++ = c;
  69. X            *tp = '\0';
  70. X            count += fprintf(dest, tempfmt, va_arg(args, pointer));
  71. X            break;
  72. X        case '-':
  73. X        case '+':
  74. X        case '0':
  75. X        case '1':
  76. X        case '2':
  77. X        case '3':
  78. X        case '4':
  79. X        case '5':
  80. X        case '6':
  81. X        case '7':
  82. X        case '8':
  83. X        case '9':
  84. X        case '.':
  85. X        case ' ':
  86. X        case '#':
  87. X        case 'h':
  88. X            *tp++ = c;
  89. X            goto continue_format;
  90. X        case 'l':
  91. #ifndef LONGINT
  92. X            longflag = 1;
  93. X            *tp++ = c;
  94. #endif
  95. X            goto continue_format;
  96. X        case '*':
  97. X            tp += Sprintf(tp, "%d", va_arg(args, int));
  98. X            goto continue_format;
  99. X        case 'n':
  100. X            *va_arg(args, intp) = count;
  101. X            break;
  102. X        case '%':
  103. X        default:
  104. X            putc(c, dest);
  105. X            count++;
  106. X            break;
  107. X        }
  108. X    } else {
  109. X        putc(c, dest);
  110. X        count++;
  111. X    }
  112. X    }
  113. X    return count;
  114. }
  115. X
  116. vprintf(format, args)
  117. char *format;
  118. va_list args;
  119. {
  120. X    return vfprintf(stdout, format, args);
  121. }
  122. SHAR_EOF
  123. chmod 0640 dmake/unix/coherent/vfprintf.c ||
  124. echo 'restore of dmake/unix/coherent/vfprintf.c failed'
  125. Wc_c="`wc -c < 'dmake/unix/coherent/vfprintf.c'`"
  126. test 4312 -eq "$Wc_c" ||
  127.     echo 'dmake/unix/coherent/vfprintf.c: original size 4312, current size' "$Wc_c"
  128. rm -f _shar_wnt_.tmp
  129. fi
  130. # ============= dmake/unix/config.mk ==============
  131. if test -f 'dmake/unix/config.mk' -a X"$1" != X"-c"; then
  132.     echo 'x - skipping dmake/unix/config.mk (File already exists)'
  133.     rm -f _shar_wnt_.tmp
  134. else
  135. > _shar_wnt_.tmp
  136. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/config.mk' &&
  137. # This is an OS specific configuration file
  138. #    It assumes that OBJDIR, TARGET and DEBUG are previously defined.
  139. #    It defines    CFLAGS, LDARGS, CPPFLAGS, STARTUPFILE, LDOBJS
  140. #            PRINTER, PRINTFLAGS
  141. #    It augments    SRC, OBJDIR, TARGET, CFLAGS, LDLIBS
  142. #
  143. PRINTER        = hw
  144. PRINTFLAGS    = -P$(PRINTER)
  145. STARTUPFILE    = $(OS)/startup.mk
  146. CPPFLAGS     = $(CFLAGS)
  147. LDOBJS        = $(CSTARTUP) $(OBJDIR)/{$(<:f)}
  148. LDARGS        = $(LDFLAGS) -o $@ $(LDOBJS) $(LDLIBS)
  149. X
  150. # Debug flags
  151. DB_CFLAGS    = -g -DDBUG
  152. DB_LDFLAGS    = -g
  153. DB_LDLIBS    =
  154. X
  155. # NO Debug flags
  156. NDB_CFLAGS    = -O
  157. NDB_LDFLAGS    =
  158. NDB_LDLIBS    =
  159. X
  160. # Local configuration modifications for CFLAGS.
  161. CFLAGS         += -I$(OS)
  162. X
  163. # Sources that must be defined for each different version
  164. OSSRC := arlib.c dirbrk.c rmprq.c ruletab.c runargv.c
  165. SRC  += $(OSSRC)
  166. .SETDIR=$(OS) : $(OSSRC)
  167. X
  168. # Set source dirs so that we can find files named in this
  169. # config file.
  170. .SOURCE.h : $(OS)
  171. X
  172. # See if we modify anything in the lower levels.
  173. .IF $(OSRELEASE) != $(NULL)
  174. X   .INCLUDE .IGNORE : $(OS)$(DIRSEPSTR)$(OSRELEASE)$(DIRSEPSTR)config.mk
  175. .END
  176. SHAR_EOF
  177. chmod 0640 dmake/unix/config.mk ||
  178. echo 'restore of dmake/unix/config.mk failed'
  179. Wc_c="`wc -c < 'dmake/unix/config.mk'`"
  180. test 1031 -eq "$Wc_c" ||
  181.     echo 'dmake/unix/config.mk: original size 1031, current size' "$Wc_c"
  182. rm -f _shar_wnt_.tmp
  183. fi
  184. # ============= dmake/unix/dirbrk.c ==============
  185. if test -f 'dmake/unix/dirbrk.c' -a X"$1" != X"-c"; then
  186.     echo 'x - skipping dmake/unix/dirbrk.c (File already exists)'
  187.     rm -f _shar_wnt_.tmp
  188. else
  189. > _shar_wnt_.tmp
  190. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/dirbrk.c' &&
  191. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/dirbrk.c,v 1.1 1992/01/24 03:28:27 dvadura Exp $
  192. -- SYNOPSIS -- define the directory separator string.
  193. -- 
  194. -- DESCRIPTION
  195. --     Define this string for any character that may appear in a path name
  196. --    and can be used as a directory separator.  Also provide a function
  197. --    to indicate if a given path begins at the root of the file system.
  198. --
  199. -- AUTHOR
  200. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  201. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  202. --
  203. -- COPYRIGHT
  204. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  205. -- 
  206. --      This program is free software; you can redistribute it and/or
  207. --      modify it under the terms of the GNU General Public License
  208. --      (version 1), as published by the Free Software Foundation, and
  209. --      found in the file 'LICENSE' included with this distribution.
  210. -- 
  211. --      This program is distributed in the hope that it will be useful,
  212. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  213. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  214. --      GNU General Public License for more details.
  215. -- 
  216. --      You should have received a copy of the GNU General Public License
  217. --      along with this program;  if not, write to the Free Software
  218. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  219. --
  220. -- LOG
  221. --     $Log: dirbrk.c,v $
  222. X * Revision 1.1  1992/01/24  03:28:27  dvadura
  223. X * dmake Version 3.8, Initial revision
  224. X *
  225. */
  226. X
  227. #include "extern.h"
  228. X
  229. /* Unix only uses / */
  230. char*    DirBrkStr = "/";
  231. X
  232. /*
  233. ** Return TRUE if the name is the full specification of a path name to a file
  234. ** starting at the root of the file system, otherwise return FALSE
  235. */
  236. PUBLIC int
  237. If_root_path(name)
  238. char *name;
  239. {
  240. X   return( strchr(DirBrkStr, *name) != NIL(char) );
  241. }
  242. SHAR_EOF
  243. chmod 0640 dmake/unix/dirbrk.c ||
  244. echo 'restore of dmake/unix/dirbrk.c failed'
  245. Wc_c="`wc -c < 'dmake/unix/dirbrk.c'`"
  246. test 1821 -eq "$Wc_c" ||
  247.     echo 'dmake/unix/dirbrk.c: original size 1821, current size' "$Wc_c"
  248. rm -f _shar_wnt_.tmp
  249. fi
  250. # ============= dmake/unix/explode.c ==============
  251. if test -f 'dmake/unix/explode.c' -a X"$1" != X"-c"; then
  252.     echo 'x - skipping dmake/unix/explode.c (File already exists)'
  253.     rm -f _shar_wnt_.tmp
  254. else
  255. > _shar_wnt_.tmp
  256. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/explode.c' &&
  257. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/explode.c,v 1.1 1992/01/24 03:28:28 dvadura Exp $
  258. -- SYNOPSIS -- Routines to explode dag if .SETDIR targets present.
  259. -- 
  260. -- DESCRIPTION
  261. --    These routines are called by parallel dmake implementations to
  262. --    explode the dmake DAG at .SETDIR targets so that parallel makes
  263. --    can traverse common portions of the DAG in parallel.
  264. -- 
  265. -- AUTHOR
  266. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  267. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  268. --
  269. -- COPYRIGHT
  270. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  271. -- 
  272. --      This program is free software; you can redistribute it and/or
  273. --      modify it under the terms of the GNU General Public License
  274. --      (version 1), as published by the Free Software Foundation, and
  275. --      found in the file 'LICENSE' included with this distribution.
  276. -- 
  277. --      This program is distributed in the hope that it will be useful,
  278. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  279. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  280. --      GNU General Public License for more details.
  281. -- 
  282. --      You should have received a copy of the GNU General Public License
  283. --      along with this program;  if not, write to the Free Software
  284. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  285. --
  286. -- LOG
  287. --     $Log: explode.c,v $
  288. X * Revision 1.1  1992/01/24  03:28:28  dvadura
  289. X * dmake Version 3.8, Initial revision
  290. X *
  291. */
  292. X
  293. #include "extern.h"
  294. #include "alloc.h"
  295. #include "db.h"
  296. X
  297. CELLPTR
  298. Explode_cell( cp, dir )
  299. CELLPTR cp;
  300. CELLPTR dir;
  301. {
  302. X   int explode = FALSE;
  303. X   CELLPTR root;
  304. X   CELLPTR tcp;
  305. X   CELLPTR ocp;
  306. X   HOWPTR  fhow = NIL(HOW);
  307. X
  308. X
  309. X   if( cp == NIL(CELL) ) return(cp);
  310. X
  311. X   ocp = cp;
  312. X   if( (root = cp->ce_name->CP_ROOT) != dir ) {
  313. X      if( cp->ce_name->CP_ROOT != NIL(CELL) ) {
  314. X     HASHPTR name;
  315. X
  316. X     tcp  = Def_cell(cp->CE_NAME, dir);
  317. X     name = tcp->ce_name;
  318. X     *tcp = *cp;
  319. X     tcp->ce_name = name;
  320. X
  321. X     cp = tcp;
  322. X     explode = TRUE;
  323. X      }
  324. X   }
  325. X   else if( root && root == dir )
  326. X      return( cp );
  327. X
  328. X   /* The code here is required, as it takes care of the .UPDATEALL common
  329. X    * targets. */
  330. X   tcp = cp;
  331. X   do {
  332. X      tcp->ce_name->CP_ROOT = dir;
  333. X
  334. X      if( tcp->CE_HOW != fhow ) {
  335. X     tcp->CE_HOW = Explode_how( tcp->CE_HOW, cp->ce_dir?cp:dir, explode );
  336. X     if( tcp == cp ) fhow = tcp->CE_HOW;
  337. X      }
  338. X
  339. X      if( explode && tcp->ce_all )
  340. X         if( tcp->ce_all != ocp ) {
  341. X        CELLPTR ttcp = Def_cell( tcp->ce_all->CE_NAME, dir );
  342. X        HASHPTR name = ttcp->ce_name;
  343. X
  344. X        *ttcp = *tcp->ce_all;
  345. X        ttcp->ce_name = name;
  346. X        tcp->ce_all   = ttcp;
  347. X        ttcp->CE_HOW  = fhow;
  348. X     }
  349. X     else
  350. X        tcp->ce_all = cp;
  351. X
  352. X      tcp = tcp->ce_all;
  353. X   }
  354. X   while( tcp != NIL(CELL) && tcp != cp );
  355. X
  356. X   return( cp );
  357. }
  358. X
  359. X
  360. HOWPTR
  361. Explode_how( how, dir, copy )
  362. HOWPTR  how;
  363. CELLPTR dir;
  364. int     copy;
  365. {
  366. X   if( how == NIL(HOW) ) return( how );
  367. X
  368. X   if( copy ) {
  369. X      HOWPTR thow;
  370. X
  371. X      TALLOC( thow, 1, HOW );
  372. X      *thow = *how;
  373. X      how = thow;
  374. X   }
  375. X
  376. X   how->hw_next = Explode_how( how->hw_next, dir, copy );
  377. X   how->hw_prq  = Explode_prq( how->hw_prq, dir, copy );
  378. X
  379. X   return( how );
  380. }
  381. X
  382. X
  383. LINKPTR
  384. Explode_prq( prq, dir, copy )
  385. LINKPTR prq;
  386. CELLPTR dir;
  387. int     copy;
  388. {
  389. X   if( prq == NIL(LINK) ) return(prq);
  390. X
  391. X   if( copy ) {
  392. X      LINKPTR tprq;
  393. X
  394. X      TALLOC( tprq, 1, LINK );
  395. X      *tprq = *prq;
  396. X      prq = tprq;
  397. X   }
  398. X
  399. X   prq->cl_next = Explode_prq( prq->cl_next, dir, copy );
  400. X   prq->cl_prq  = Explode_cell( prq->cl_prq, dir );
  401. X
  402. X   return( prq );
  403. }
  404. SHAR_EOF
  405. chmod 0640 dmake/unix/explode.c ||
  406. echo 'restore of dmake/unix/explode.c failed'
  407. Wc_c="`wc -c < 'dmake/unix/explode.c'`"
  408. test 3513 -eq "$Wc_c" ||
  409.     echo 'dmake/unix/explode.c: original size 3513, current size' "$Wc_c"
  410. rm -f _shar_wnt_.tmp
  411. fi
  412. # ============= dmake/unix/rmprq.c ==============
  413. if test -f 'dmake/unix/rmprq.c' -a X"$1" != X"-c"; then
  414.     echo 'x - skipping dmake/unix/rmprq.c (File already exists)'
  415.     rm -f _shar_wnt_.tmp
  416. else
  417. > _shar_wnt_.tmp
  418. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/rmprq.c' &&
  419. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/rmprq.c,v 1.1 1992/01/24 03:28:28 dvadura Exp $
  420. -- SYNOPSIS -- remove prerequisites code.
  421. -- 
  422. -- DESCRIPTION
  423. --    This code is different for DOS and for UNIX and parallel make
  424. --    architectures since the parallel case requires the rm's to be
  425. --    run in parallel, whereas DOS guarantees to run them sequentially.
  426. -- 
  427. -- AUTHOR
  428. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  429. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  430. --
  431. -- COPYRIGHT
  432. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  433. -- 
  434. --      This program is free software; you can redistribute it and/or
  435. --      modify it under the terms of the GNU General Public License
  436. --      (version 1), as published by the Free Software Foundation, and
  437. --      found in the file 'LICENSE' included with this distribution.
  438. -- 
  439. --      This program is distributed in the hope that it will be useful,
  440. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  441. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  442. --      GNU General Public License for more details.
  443. -- 
  444. --      You should have received a copy of the GNU General Public License
  445. --      along with this program;  if not, write to the Free Software
  446. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  447. --
  448. -- LOG
  449. --     $Log: rmprq.c,v $
  450. X * Revision 1.1  1992/01/24  03:28:28  dvadura
  451. X * dmake Version 3.8, Initial revision
  452. X *
  453. */
  454. X
  455. #include "extern.h"
  456. X
  457. PUBLIC void
  458. Remove_prq( tcp )
  459. CELLPTR tcp;
  460. {
  461. X   static  LINKPTR rlp = NIL(LINK);
  462. X   static  flag = 0;
  463. X   static  HASHPTR m_at, m_q, m_b, m_g, m_l, m_bb, m_up;
  464. X   char    *m_at_s, *m_g_s, *m_q_s, *m_b_s, *m_l_s, *m_bb_s, *m_up_s;
  465. X   LINKPTR tlp;
  466. X
  467. X   tcp->ce_flag         &= ~(F_MADE|F_VISITED);
  468. X   tcp->ce_time          = 0L;
  469. X
  470. X   for( tlp=rlp; tlp !=NIL(LINK); tlp=tlp->cl_next )
  471. X      if( (tlp->cl_prq->ce_flag & (F_VISITED|F_MADE)) != F_VISITED )
  472. X     break;
  473. X
  474. X   if( tlp == NIL(LINK) ) {
  475. X      TALLOC(tlp, 1, LINK);
  476. X      TALLOC(tlp->cl_prq, 1, CELL);
  477. X      tlp->cl_next = rlp;
  478. X      rlp = tlp;
  479. X   }
  480. X
  481. X   *tlp->cl_prq = *tcp;
  482. X
  483. X   /* We save the dynamic macro values here, as it is possible that the
  484. X    * .REMOVE recipe is getting executed for a target while some other target
  485. X    * is in the middle of executing it's list of recipe lines, in this case
  486. X    * the values of $@ etc, must be preserved so that when we return to
  487. X    * complete the other recipe we must make certain that the values of it's
  488. X    * dynamic macros are unmodified. */
  489. X
  490. X   if( !flag ) {
  491. X      /* Do the getting of the macros only once. */
  492. X      flag = 1;
  493. X      m_at = Get_name("@", Macs, TRUE);
  494. X      m_g  = Get_name(">", Macs, TRUE);
  495. X      m_q  = Get_name("?", Macs, TRUE);
  496. X      m_b  = Get_name("<", Macs, TRUE);
  497. X      m_l  = Get_name("&", Macs, TRUE);
  498. X      m_bb = Get_name("*", Macs, TRUE);
  499. X      m_up = Get_name("^", Macs, TRUE);
  500. X   }
  501. X
  502. X   m_at_s = m_at->ht_value; m_at->ht_value = NIL(char);
  503. X   m_g_s  = m_g->ht_value;  m_g->ht_value  = NIL(char);
  504. X   m_q_s  = m_q->ht_value;  m_q->ht_value  = NIL(char);
  505. X   m_b_s  = m_b->ht_value;  m_b->ht_value  = NIL(char);
  506. X   m_l_s  = m_l->ht_value;  m_l->ht_value  = NIL(char);
  507. X   m_bb_s = m_bb->ht_value; m_bb->ht_value = NIL(char);
  508. X   m_up_s = m_up->ht_value; m_up->ht_value = NIL(char);
  509. X
  510. X   Make( tlp->cl_prq, tlp, NIL(CELL) );
  511. X   if( tlp->cl_prq->ce_dir ){
  512. X      FREE(tlp->cl_prq->ce_dir);
  513. X      tlp->cl_prq->ce_dir=NIL(char);
  514. X   }
  515. X
  516. X   m_at->ht_value = m_at_s;
  517. X   m_g->ht_value  = m_g_s;
  518. X   m_q->ht_value  = m_q_s;
  519. X   m_b->ht_value  = m_b_s;
  520. X   m_l->ht_value  = m_l_s;
  521. X   m_bb->ht_value = m_bb_s;
  522. X   m_up->ht_value = m_up_s;
  523. }
  524. SHAR_EOF
  525. chmod 0640 dmake/unix/rmprq.c ||
  526. echo 'restore of dmake/unix/rmprq.c failed'
  527. Wc_c="`wc -c < 'dmake/unix/rmprq.c'`"
  528. test 3643 -eq "$Wc_c" ||
  529.     echo 'dmake/unix/rmprq.c: original size 3643, current size' "$Wc_c"
  530. rm -f _shar_wnt_.tmp
  531. fi
  532. # ============= dmake/unix/ruletab.c ==============
  533. if test -f 'dmake/unix/ruletab.c' -a X"$1" != X"-c"; then
  534.     echo 'x - skipping dmake/unix/ruletab.c (File already exists)'
  535.     rm -f _shar_wnt_.tmp
  536. else
  537. > _shar_wnt_.tmp
  538. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/ruletab.c' &&
  539. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/ruletab.c,v 1.1 1992/01/24 03:28:29 dvadura Exp $
  540. -- SYNOPSIS -- Default initial configuration of dmake.
  541. -- 
  542. -- DESCRIPTION
  543. --     Define here the initial set of rules that are defined before
  544. --    dmake performs any processing.
  545. --
  546. -- AUTHOR
  547. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  548. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  549. --
  550. -- COPYRIGHT
  551. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  552. -- 
  553. --      This program is free software; you can redistribute it and/or
  554. --      modify it under the terms of the GNU General Public License
  555. --      (version 1), as published by the Free Software Foundation, and
  556. --      found in the file 'LICENSE' included with this distribution.
  557. -- 
  558. --      This program is distributed in the hope that it will be useful,
  559. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  560. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  561. --      GNU General Public License for more details.
  562. -- 
  563. --      You should have received a copy of the GNU General Public License
  564. --      along with this program;  if not, write to the Free Software
  565. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  566. --
  567. -- LOG
  568. --     $Log: ruletab.c,v $
  569. X * Revision 1.1  1992/01/24  03:28:29  dvadura
  570. X * dmake Version 3.8, Initial revision
  571. X *
  572. */
  573. X
  574. /* These are control macros for dmake that MUST be defined at some point
  575. X * if they are NOT dmake will not work!  These are default definitions.  They
  576. X * may be overridden inside the .STARTUP makefile, they are here
  577. X * strictly so that dmake can parse the STARTUP makefile */
  578. X
  579. static char *_rules[] = {
  580. X    "MAXPROCESSLIMIT := 10",
  581. X    "MAXLINELENGTH := 8190",
  582. X    ".IMPORT .IGNORE: ROOTDIR",
  583. X    ".MAKEFILES : makefile.mk Makefile makefile",
  584. X    ".SOURCE    : .NULL",
  585. #include "startup.h"
  586. X    0 };
  587. X
  588. char **Rule_tab = _rules; /* for sundry reasons in Get_environment() */
  589. SHAR_EOF
  590. chmod 0640 dmake/unix/ruletab.c ||
  591. echo 'restore of dmake/unix/ruletab.c failed'
  592. Wc_c="`wc -c < 'dmake/unix/ruletab.c'`"
  593. test 1948 -eq "$Wc_c" ||
  594.     echo 'dmake/unix/ruletab.c: original size 1948, current size' "$Wc_c"
  595. rm -f _shar_wnt_.tmp
  596. fi
  597. # ============= dmake/unix/runargv.c ==============
  598. if test -f 'dmake/unix/runargv.c' -a X"$1" != X"-c"; then
  599.     echo 'x - skipping dmake/unix/runargv.c (File already exists)'
  600.     rm -f _shar_wnt_.tmp
  601. else
  602. > _shar_wnt_.tmp
  603. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/runargv.c' &&
  604. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/runargv.c,v 1.1 1992/01/24 03:28:50 dvadura Exp $
  605. -- SYNOPSIS -- invoke a sub process.
  606. -- 
  607. -- DESCRIPTION
  608. --     Use the standard methods of executing a sub process.
  609. --
  610. -- AUTHOR
  611. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  612. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  613. --
  614. -- COPYRIGHT
  615. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  616. -- 
  617. --      This program is free software; you can redistribute it and/or
  618. --      modify it under the terms of the GNU General Public License
  619. --      (version 1), as published by the Free Software Foundation, and
  620. --      found in the file 'LICENSE' included with this distribution.
  621. -- 
  622. --      This program is distributed in the hope that it will be useful,
  623. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  624. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  625. --      GNU General Public License for more details.
  626. -- 
  627. --      You should have received a copy of the GNU General Public License
  628. --      along with this program;  if not, write to the Free Software
  629. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  630. --
  631. -- LOG
  632. --     $Log: runargv.c,v $
  633. X * Revision 1.1  1992/01/24  03:28:50  dvadura
  634. X * dmake Version 3.8, Initial revision
  635. X *
  636. */
  637. X
  638. #include <signal.h>
  639. #include "extern.h"
  640. #include "sysintf.h"
  641. X
  642. typedef struct prp {
  643. X   char *prp_cmd;
  644. X   int   prp_group;
  645. X   int   prp_ignore;
  646. X   int   prp_last;
  647. X   int     prp_shell;
  648. X   struct prp *prp_next;
  649. } RCP, *RCPPTR;
  650. X
  651. typedef struct pr {
  652. X   int        pr_valid;
  653. X   int        pr_pid;
  654. X   CELLPTR    pr_target;
  655. X   int        pr_ignore;
  656. X   int        pr_last;
  657. X   RCPPTR      pr_recipe;
  658. X   RCPPTR      pr_recipe_end;
  659. X   char        *pr_dir;
  660. } PR;
  661. X
  662. static PR  *_procs    = NIL(PR);
  663. static int  _proc_cnt = 0;
  664. static int  _abort_flg= FALSE;
  665. static int  _use_i    = -1;
  666. static int  _do_upd   = 0;
  667. X
  668. static  void    _add_child ANSI((int, CELLPTR, int, int));
  669. static  void    _attach_cmd ANSI((char *, int, int, CELLPTR, int, int));
  670. static  void    _finished_child ANSI((int, int));
  671. static  int     _running ANSI((CELLPTR));
  672. X
  673. PUBLIC int
  674. runargv(target, ignore, group, last, shell, cmd)
  675. CELLPTR target;
  676. int     ignore;
  677. int    group;
  678. int    last;
  679. int     shell;
  680. char    *cmd;
  681. {
  682. X   extern  int  errno;
  683. X   extern  char *sys_errlist[];
  684. X   int          pid;
  685. X   char         **argv;
  686. X
  687. X   if( _running(target) /*&& Max_proc != 1*/ ) {
  688. X      /* The command will be executed when the previous recipe
  689. X       * line completes. */
  690. X      _attach_cmd( cmd, group, ignore, target, last, shell );
  691. X      return(1);
  692. X   }
  693. X
  694. X   while( _proc_cnt == Max_proc )
  695. X      if( Wait_for_child(FALSE, -1) == -1 )  Fatal( "Lost a child" );
  696. X
  697. X   argv = Pack_argv( group, shell, cmd );
  698. X
  699. X   switch( pid=fork() ){
  700. X      int   wid;
  701. X      int   status;
  702. X
  703. X   case -1: /* fork failed */
  704. X      Error("%s: %s", argv[0], sys_errlist[errno]);
  705. X      Handle_result(-1, ignore, _abort_flg, target);
  706. X      return(-1);
  707. X
  708. X   case 0:  /* child */
  709. X      execvp(argv[0], argv);
  710. X      Continue = TRUE;   /* survive error message */
  711. X      Error("%s: %s", argv[0], sys_errlist[errno]);
  712. X      kill(getpid(), SIGTERM);
  713. X      /*NOTREACHED*/
  714. X
  715. X   default: /* parent */
  716. X      _add_child(pid, target, ignore, last);
  717. X   }
  718. X
  719. X   return(1);
  720. }
  721. X
  722. X
  723. PUBLIC int
  724. Wait_for_child( abort_flg, pid )
  725. int abort_flg;
  726. int pid;
  727. {
  728. X   int wid;
  729. X   int status;
  730. X   int waitchild;
  731. X
  732. X   waitchild = (pid == -1)? FALSE : Wait_for_completion;
  733. X
  734. X   do {
  735. X      if( (wid = wait(&status)) == -1 ) return(-1);
  736. X
  737. X      _abort_flg = abort_flg;
  738. X      _finished_child(wid, status);
  739. X      _abort_flg = FALSE;
  740. X   }
  741. X   while( waitchild && pid != wid );
  742. X
  743. X   return(0);
  744. }
  745. X
  746. X
  747. PUBLIC void
  748. Clean_up_processes()
  749. {
  750. X   register int i;
  751. X
  752. X   if( _procs != NIL(PR) ) {
  753. X      for( i=0; i<Max_proc; i++ )
  754. X     if( _procs[i].pr_valid )
  755. X        kill(_procs[i].pr_pid, SIGTERM);
  756. X
  757. X      while( Wait_for_child(TRUE, -1) != -1 );
  758. X   }
  759. }
  760. X
  761. X
  762. static void
  763. _add_child( pid, target, ignore, last )
  764. int    pid;
  765. CELLPTR target;
  766. int    ignore;
  767. int     last;
  768. {
  769. X   register int i;
  770. X   register PR *pp;
  771. X
  772. X   if( _procs == NIL(PR) ) {
  773. X      TALLOC( _procs, Max_proc, PR );
  774. X   }
  775. X
  776. X   if( (i = _use_i) == -1 )
  777. X      for( i=0; i<Max_proc; i++ )
  778. X     if( !_procs[i].pr_valid )
  779. X        break;
  780. X
  781. X   pp = _procs+i;
  782. X
  783. X   pp->pr_valid  = 1;
  784. X   pp->pr_pid    = pid;
  785. X   pp->pr_target = target;
  786. X   pp->pr_ignore = ignore;
  787. X   pp->pr_last   = last;
  788. X   pp->pr_dir    = _strdup(Get_current_dir());
  789. X
  790. X   Current_target = NIL(CELL);
  791. X
  792. X   _proc_cnt++;
  793. X
  794. X   if( Wait_for_completion ) Wait_for_child( FALSE, pid );
  795. }
  796. X
  797. X
  798. static void
  799. _finished_child(pid, status)
  800. int    pid;
  801. int    status;
  802. {
  803. X   register int i;
  804. X   register PR *pp;
  805. X   char     *dir;
  806. X
  807. X   for( i=0; i<Max_proc; i++ )
  808. X      if( _procs[i].pr_valid && _procs[i].pr_pid == pid )
  809. X     break;
  810. X
  811. X   /* Some children we didn't make esp true if using /bin/sh to execute a
  812. X    * a pipe and feed the output as a makefile into dmake. */
  813. X   if( i == Max_proc ) return;
  814. X   _procs[i].pr_valid = 0;
  815. X   _proc_cnt--;
  816. X   dir = _strdup(Get_current_dir());
  817. X   Set_dir( _procs[i].pr_dir );
  818. X
  819. X   if( _procs[i].pr_recipe != NIL(RCP) && !_abort_flg ) {
  820. X      RCPPTR rp = _procs[i].pr_recipe;
  821. X
  822. X
  823. X      Current_target = _procs[i].pr_target;
  824. X      Handle_result( status, _procs[i].pr_ignore, FALSE, _procs[i].pr_target );
  825. X      Current_target = NIL(CELL);
  826. X
  827. X      _procs[i].pr_recipe = rp->prp_next;
  828. X
  829. X      _use_i = i;
  830. X      runargv( _procs[i].pr_target, rp->prp_ignore, rp->prp_group,
  831. X           rp->prp_last, rp->prp_shell, rp->prp_cmd );
  832. X      _use_i = -1;
  833. X
  834. X      FREE( rp->prp_cmd );
  835. X      FREE( rp );
  836. X
  837. X      if( _proc_cnt == Max_proc ) Wait_for_child( FALSE, -1 );
  838. X   }
  839. X   else {
  840. X      Unlink_temp_files( _procs[i].pr_target );
  841. X      Handle_result(status,_procs[i].pr_ignore,_abort_flg,_procs[i].pr_target);
  842. X
  843. X      if( _procs[i].pr_last ) {
  844. X     FREE(_procs[i].pr_dir );
  845. X
  846. X     if( !Doing_bang ) Update_time_stamp( _procs[i].pr_target );
  847. X      }
  848. X   }
  849. X
  850. X   Set_dir(dir);
  851. X   FREE(dir);
  852. }
  853. X
  854. X
  855. static int
  856. _running( cp )
  857. CELLPTR cp;
  858. {
  859. X   register int i;
  860. X
  861. X   if( !_procs ) return(FALSE);
  862. X
  863. X   for( i=0; i<Max_proc; i++ )
  864. X      if( _procs[i].pr_valid &&
  865. X      _procs[i].pr_target == cp  )
  866. X     break;
  867. X     
  868. X   return( i != Max_proc );
  869. }
  870. X
  871. X
  872. static void
  873. _attach_cmd( cmd, group, ignore, cp, last, shell )
  874. char    *cmd;
  875. int    group;
  876. int     ignore;
  877. CELLPTR cp;
  878. int     last;
  879. int     shell;
  880. {
  881. X   register int i;
  882. X   RCPPTR rp;
  883. X
  884. X   for( i=0; i<Max_proc; i++ )
  885. X      if( _procs[i].pr_valid &&
  886. X      _procs[i].pr_target == cp  )
  887. X     break;
  888. X
  889. X   TALLOC( rp, 1, RCP );
  890. X   rp->prp_cmd   = _strdup(cmd);
  891. X   rp->prp_group = group;
  892. X   rp->prp_ignore= ignore;
  893. X   rp->prp_last  = last;
  894. X   rp->prp_shell = shell;
  895. X
  896. X   if( _procs[i].pr_recipe == NIL(RCP) )
  897. X      _procs[i].pr_recipe = _procs[i].pr_recipe_end = rp;
  898. X   else {
  899. X      _procs[i].pr_recipe_end->prp_next = rp;
  900. X      _procs[i].pr_recipe_end = rp;
  901. X   }
  902. }
  903. SHAR_EOF
  904. chmod 0640 dmake/unix/runargv.c ||
  905. echo 'restore of dmake/unix/runargv.c failed'
  906. Wc_c="`wc -c < 'dmake/unix/runargv.c'`"
  907. test 6767 -eq "$Wc_c" ||
  908.     echo 'dmake/unix/runargv.c: original size 6767, current size' "$Wc_c"
  909. rm -f _shar_wnt_.tmp
  910. fi
  911. # ============= dmake/unix/startup.h ==============
  912. if test -f 'dmake/unix/startup.h' -a X"$1" != X"-c"; then
  913.     echo 'x - skipping dmake/unix/startup.h (File already exists)'
  914.     rm -f _shar_wnt_.tmp
  915. else
  916. > _shar_wnt_.tmp
  917. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/startup.h' &&
  918. /* This file contains the default value of the MAKESTARTUP variable.
  919. X * You must set the quoted string below to the default path to the startup
  920. X * variable, so that it gets compiled in.  LEAVE ROOTDIR at the front of
  921. X * the path.  This allows the user to customize his environment for dmake
  922. X * by setting up a new ROOTDIR environment variable. */
  923. X
  924. "MAKESTARTUP := $(ROOTDIR)/usr/software/dmake/data/startup.mk",
  925. SHAR_EOF
  926. chmod 0640 dmake/unix/startup.h ||
  927. echo 'restore of dmake/unix/startup.h failed'
  928. Wc_c="`wc -c < 'dmake/unix/startup.h'`"
  929. test 412 -eq "$Wc_c" ||
  930.     echo 'dmake/unix/startup.h: original size 412, current size' "$Wc_c"
  931. rm -f _shar_wnt_.tmp
  932. fi
  933. # ============= dmake/unix/sysintf.h ==============
  934. if test -f 'dmake/unix/sysintf.h' -a X"$1" != X"-c"; then
  935.     echo 'x - skipping dmake/unix/sysintf.h (File already exists)'
  936.     rm -f _shar_wnt_.tmp
  937. else
  938. > _shar_wnt_.tmp
  939. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/sysintf.h' &&
  940. /*
  941. ** assorted bits of system interface, for common routines inside dmake.
  942. ** System specific code can be found in the config.h files for each
  943. ** of the system specifications.
  944. */
  945. #define STAT stat
  946. #define VOID_LCACHE(l,m) (void) void_lcache(l,m)
  947. #define Hook_std_writes(A)
  948. #define GETPID getpid()
  949. X
  950. /*
  951. ** standard C items
  952. */
  953. X
  954. /*
  955. ** DOS interface standard items
  956. */
  957. #define    getswitchar()    '-'
  958. X
  959. /*
  960. ** make parameters
  961. */
  962. #define    MAX_PATH_LEN    1024
  963. SHAR_EOF
  964. chmod 0640 dmake/unix/sysintf.h ||
  965. echo 'restore of dmake/unix/sysintf.h failed'
  966. Wc_c="`wc -c < 'dmake/unix/sysintf.h'`"
  967. test 441 -eq "$Wc_c" ||
  968.     echo 'dmake/unix/sysintf.h: original size 441, current size' "$Wc_c"
  969. rm -f _shar_wnt_.tmp
  970. fi
  971. # ============= dmake/unix/sysvr1/config.h ==============
  972. if test ! -d 'dmake/unix/sysvr1'; then
  973.     mkdir 'dmake/unix/sysvr1'
  974. fi
  975. if test -f 'dmake/unix/sysvr1/config.h' -a X"$1" != X"-c"; then
  976.     echo 'x - skipping dmake/unix/sysvr1/config.h (File already exists)'
  977.     rm -f _shar_wnt_.tmp
  978. else
  979. > _shar_wnt_.tmp
  980. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/sysvr1/config.h' &&
  981. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/sysvr1/config.h,v 1.1 1992/01/24 03:28:18 dvadura Exp $
  982. -- SYNOPSIS -- Configurarion include file.
  983. -- 
  984. -- DESCRIPTION
  985. --     There is one of these for each specific machine configuration.
  986. --    It can be used to further tweek the machine specific sources
  987. --    so that they compile.
  988. --
  989. -- AUTHOR
  990. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  991. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  992. --
  993. -- COPYRIGHT
  994. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  995. -- 
  996. --      This program is free software; you can redistribute it and/or
  997. --      modify it under the terms of the GNU General Public License
  998. --      (version 1), as published by the Free Software Foundation, and
  999. --      found in the file 'LICENSE' included with this distribution.
  1000. -- 
  1001. --      This program is distributed in the hope that it will be useful,
  1002. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  1003. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1004. --      GNU General Public License for more details.
  1005. -- 
  1006. --      You should have received a copy of the GNU General Public License
  1007. --      along with this program;  if not, write to the Free Software
  1008. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1009. --
  1010. -- LOG
  1011. --     $Log: config.h,v $
  1012. X * Revision 1.1  1992/01/24  03:28:18  dvadura
  1013. X * dmake Version 3.8, Initial revision
  1014. X *
  1015. */
  1016. X
  1017. /* define this for configurations that don't have the coreleft function
  1018. X * so that the code compiles.  To my knowledge coreleft exists only on
  1019. X * Turbo C, but it is needed here since the function is used in many debug
  1020. X * macros. */
  1021. #define coreleft() 0L
  1022. X
  1023. /* Define the getcwd function that is used in the code, since BSD does
  1024. X * not have getcwd, but call it getwd instead. */
  1025. extern char *getcwd ANSI((char *, int));
  1026. X
  1027. /* Define setvbuf, SysV doesn't have one */
  1028. #define setvbuf(fp, bp, type, len) setbuf( fp, NULL );
  1029. X
  1030. /* We don't care about CONST */
  1031. #define CONST
  1032. X
  1033. /* a small problem with pointer to voids on some unix machines needs this */
  1034. #define PVOID void *
  1035. SHAR_EOF
  1036. chmod 0640 dmake/unix/sysvr1/config.h ||
  1037. echo 'restore of dmake/unix/sysvr1/config.h failed'
  1038. Wc_c="`wc -c < 'dmake/unix/sysvr1/config.h'`"
  1039. test 2107 -eq "$Wc_c" ||
  1040.     echo 'dmake/unix/sysvr1/config.h: original size 2107, current size' "$Wc_c"
  1041. rm -f _shar_wnt_.tmp
  1042. fi
  1043. # ============= dmake/unix/sysvr1/config.mk ==============
  1044. if test -f 'dmake/unix/sysvr1/config.mk' -a X"$1" != X"-c"; then
  1045.     echo 'x - skipping dmake/unix/sysvr1/config.mk (File already exists)'
  1046.     rm -f _shar_wnt_.tmp
  1047. else
  1048. > _shar_wnt_.tmp
  1049. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/sysvr1/config.mk' &&
  1050. # This is the SysV R3 UNIX configuration file for DMAKE
  1051. #    It simply modifies the values of SRC, and checks to see if
  1052. #    OSENVIRONMENT is defined.  If so it includes the appropriate
  1053. #    config.mk file.
  1054. #
  1055. # It also sets the values of .SOURCE.c and .SOURCE.h to include the local
  1056. # directory.
  1057. #
  1058. osrdir := $(OS)$(DIRSEPSTR)$(OSRELEASE)
  1059. X
  1060. # The following are required sources
  1061. OSDSRC := vfprintf.c
  1062. X
  1063. .IF $(OSDSRC)
  1064. X   SRC    += $(OSDSRC)
  1065. X   .SETDIR=$(osrdir) : $(OSDSRC)
  1066. .END
  1067. X
  1068. .SOURCE.h : $(osrdir)
  1069. X
  1070. # Local configuration modifications for CFLAGS, there's local SysV includes
  1071. # too.
  1072. CFLAGS += -I$(osrdir)
  1073. X
  1074. # See if we modify anything in the lower levels.
  1075. .IF $(OSENVIRONMENT) != $(NULL)
  1076. X   .INCLUDE .IGNORE : $(osrdir)$(DIRSEPSTR)$(OSENVIRONMENT)$(DIRSEPSTR)config.mk
  1077. .END
  1078. SHAR_EOF
  1079. chmod 0640 dmake/unix/sysvr1/config.mk ||
  1080. echo 'restore of dmake/unix/sysvr1/config.mk failed'
  1081. Wc_c="`wc -c < 'dmake/unix/sysvr1/config.mk'`"
  1082. test 761 -eq "$Wc_c" ||
  1083.     echo 'dmake/unix/sysvr1/config.mk: original size 761, current size' "$Wc_c"
  1084. rm -f _shar_wnt_.tmp
  1085. fi
  1086. # ============= dmake/unix/sysvr1/make.sh ==============
  1087. if test -f 'dmake/unix/sysvr1/make.sh' -a X"$1" != X"-c"; then
  1088.     echo 'x - skipping dmake/unix/sysvr1/make.sh (File already exists)'
  1089.     rm -f _shar_wnt_.tmp
  1090. else
  1091. > _shar_wnt_.tmp
  1092. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/sysvr1/make.sh' &&
  1093. mkdir objects
  1094. cc -c -I. -Iunix -Iunix/sysvr1 -O infer.c
  1095. mv infer.o objects
  1096. cc -c -I. -Iunix -Iunix/sysvr1 -O make.c
  1097. mv make.o objects
  1098. cc -c -I. -Iunix -Iunix/sysvr1 -O stat.c
  1099. mv stat.o objects
  1100. cc -c -I. -Iunix -Iunix/sysvr1 -O expand.c
  1101. mv expand.o objects
  1102. cc -c -I. -Iunix -Iunix/sysvr1 -O dmstring.c
  1103. mv dmstring.o objects
  1104. cc -c -I. -Iunix -Iunix/sysvr1 -O hash.c
  1105. mv hash.o objects
  1106. cc -c -I. -Iunix -Iunix/sysvr1 -O dag.c
  1107. mv dag.o objects
  1108. cc -c -I. -Iunix -Iunix/sysvr1 -O dmake.c
  1109. mv dmake.o objects
  1110. cc -c -I. -Iunix -Iunix/sysvr1 -O path.c
  1111. mv path.o objects
  1112. cc -c -I. -Iunix -Iunix/sysvr1 -O imacs.c
  1113. mv imacs.o objects
  1114. cc -c -I. -Iunix -Iunix/sysvr1 -O sysintf.c
  1115. mv sysintf.o objects
  1116. cc -c -I. -Iunix -Iunix/sysvr1 -O parse.c
  1117. mv parse.o objects
  1118. cc -c -I. -Iunix -Iunix/sysvr1 -O getinp.c
  1119. mv getinp.o objects
  1120. cc -c -I. -Iunix -Iunix/sysvr1 -O quit.c
  1121. mv quit.o objects
  1122. cc -c -I. -Iunix -Iunix/sysvr1 -O state.c
  1123. mv state.o objects
  1124. cc -c -I. -Iunix -Iunix/sysvr1 -O basename.c
  1125. mv basename.o objects
  1126. cc -c -I. -Iunix -Iunix/sysvr1 -O dmdump.c
  1127. mv dmdump.o objects
  1128. cc -c -I. -Iunix -Iunix/sysvr1 -O macparse.c
  1129. mv macparse.o objects
  1130. cc -c -I. -Iunix -Iunix/sysvr1 -O rulparse.c
  1131. mv rulparse.o objects
  1132. cc -c -I. -Iunix -Iunix/sysvr1 -O percent.c
  1133. mv percent.o objects
  1134. cc -c -I. -Iunix -Iunix/sysvr1 -O function.c
  1135. mv function.o objects
  1136. cc -c -I. -Iunix -Iunix/sysvr1 -O unix/arlib.c
  1137. mv arlib.o objects
  1138. cc -c -I. -Iunix -Iunix/sysvr1 -O unix/dirbrk.c
  1139. mv dirbrk.o objects
  1140. cc -c -I. -Iunix -Iunix/sysvr1 -O unix/rmprq.c
  1141. mv rmprq.o objects
  1142. cc -c -I. -Iunix -Iunix/sysvr1 -O unix/ruletab.c
  1143. mv ruletab.o objects
  1144. cc -c -I. -Iunix -Iunix/sysvr1 -O unix/runargv.c
  1145. mv runargv.o objects
  1146. cc -c -I. -Iunix -Iunix/sysvr1 -O unix/sysvr1/vfprintf.c
  1147. mv vfprintf.o objects
  1148. cc  -o dmake  objects/infer.o objects/make.o objects/stat.o objects/expand.o objects/dmstring.o objects/hash.o objects/dag.o objects/dmake.o objects/path.o objects/imacs.o objects/sysintf.o objects/parse.o objects/getinp.o objects/quit.o objects/state.o objects/basename.o objects/dmdump.o objects/macparse.o objects/rulparse.o objects/percent.o objects/function.o objects/arlib.o objects/dirbrk.o objects/rmprq.o objects/ruletab.o objects/runargv.o objects/vfprintf.o 
  1149. cp unix/sysvr1/startup.mk startup.mk
  1150. SHAR_EOF
  1151. chmod 0640 dmake/unix/sysvr1/make.sh ||
  1152. echo 'restore of dmake/unix/sysvr1/make.sh failed'
  1153. Wc_c="`wc -c < 'dmake/unix/sysvr1/make.sh'`"
  1154. test 2251 -eq "$Wc_c" ||
  1155.     echo 'dmake/unix/sysvr1/make.sh: original size 2251, current size' "$Wc_c"
  1156. rm -f _shar_wnt_.tmp
  1157. fi
  1158. # ============= dmake/unix/sysvr1/public.h ==============
  1159. if test -f 'dmake/unix/sysvr1/public.h' -a X"$1" != X"-c"; then
  1160.     echo 'x - skipping dmake/unix/sysvr1/public.h (File already exists)'
  1161.     rm -f _shar_wnt_.tmp
  1162. else
  1163. > _shar_wnt_.tmp
  1164. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/sysvr1/public.h' &&
  1165. /* RCS      -- $Header$
  1166. -- WARNING  -- This file is AUTOMATICALLY GENERATED DO NOT EDIT IT
  1167. --
  1168. -- SYNOPSIS -- Local functions exported to be visible by others.
  1169. --
  1170. -- DESCRIPTION
  1171. --      This file is generated by 'genpub'.  Function declarations
  1172. --      that appear in this file are extracted by 'genpub' from
  1173. --      source files.  Any function in the source file whose definition
  1174. --      appears like:
  1175. --
  1176. --          PUBLIC return_type
  1177. --          function( arg_list );
  1178. --          type_expr1 arg1;
  1179. --          ...
  1180. --
  1181. --      has its definition extracted and a line of the form:
  1182. --
  1183. --          return_type function ANSI((type_expr1,type_expr2,...));
  1184. --
  1185. --      entered into the output file.
  1186. --
  1187. -- AUTHOR
  1188. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  1189. --      CS DEPT, University of Waterloo, Waterloo, Ont., Canada
  1190. --
  1191. -- COPYRIGHT
  1192. --      Copyright (c) 1990 by Dennis Vadura.  All rights reserved.
  1193. -- 
  1194. --      This program is free software; you can redistribute it and/or
  1195. --      modify it under the terms of the GNU General Public License
  1196. --      (version 1), as published by the Free Software Foundation, and
  1197. --      found in the file 'LICENSE' included with this distribution.
  1198. -- 
  1199. --      This program is distributed in the hope that it will be useful,
  1200. --      but WITHOUT ANY WARRANTY; without even the implied warrant of
  1201. --      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1202. --      GNU General Public License for more details.
  1203. -- 
  1204. --      You should have received a copy of the GNU General Public License
  1205. --      along with this program;  if not, write to the Free Software
  1206. --      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  1207. --
  1208. -- LOG
  1209. --     $Log$
  1210. */
  1211. X
  1212. #ifndef _DMAKE_PUBLIC_h
  1213. #define _DMAKE_PUBLIC_h
  1214. X
  1215. void Infer_recipe ANSI((CELLPTR, CELLPTR));
  1216. int Make_targets ANSI(());
  1217. int Exec_commands ANSI((CELLPTR));
  1218. void Print_cmnd ANSI((char *, int, int));
  1219. void Pop_dir ANSI((int));
  1220. void Append_line ANSI((char *, int, FILE *, char *, int, int));
  1221. void Stat_target ANSI((CELLPTR, int));
  1222. char * Expand ANSI((char *));
  1223. char * Apply_edit ANSI((char *, char *, char *, int, int));
  1224. void Map_esc ANSI((char *));
  1225. char* Apply_modifiers ANSI((int, char *));
  1226. char* Tokenize ANSI((char *, char *));
  1227. char * _strjoin ANSI((char *, char *, int, int));
  1228. char * _stradd ANSI((char *, char *, int));
  1229. char * _strapp ANSI((char *, char *));
  1230. char * _strdup ANSI((char *));
  1231. char * _strdup2 ANSI((char *));
  1232. char * _strpbrk ANSI((char *, char *));
  1233. char * _strspn ANSI((char *, char *));
  1234. char * _strstr ANSI((char *, char *));
  1235. char * _substr ANSI((char *, char *));
  1236. uint16 Hash ANSI((char *, uint32 *));
  1237. HASHPTR Get_name ANSI((char *, HASHPTR *, int));
  1238. HASHPTR Search_table ANSI((HASHPTR *, char *, uint16 *, uint32 *));
  1239. HASHPTR Def_macro ANSI((char *, char *, int));
  1240. CELLPTR Def_cell ANSI((char *));
  1241. LINKPTR Add_prerequisite ANSI((CELLPTR, CELLPTR, int, int));
  1242. void Clear_prerequisites ANSI((CELLPTR));
  1243. int Test_circle ANSI((CELLPTR, int));
  1244. STRINGPTR Def_recipe ANSI((char *, STRINGPTR, int, int));
  1245. t_attr Rcp_attribute ANSI((char *));
  1246. int main ANSI((int, char **));
  1247. FILE * Openfile ANSI((char *, int, int));
  1248. FILE * Closefile ANSI(());
  1249. FILE * Search_file ANSI((char *, char **));
  1250. char * Filename ANSI(());
  1251. int Nestlevel ANSI(());
  1252. void No_ram ANSI(());
  1253. int Usage ANSI((int));
  1254. int Version ANSI(());
  1255. char * Get_suffix ANSI((char *));
  1256. char * Build_path ANSI((char *, char *));
  1257. void Make_rules ANSI(());
  1258. void Create_macro_vars ANSI(());
  1259. time_t Do_stat ANSI((char *, char *, char **));
  1260. int Do_touch ANSI((char *, char *, char **));
  1261. void Void_lib_cache ANSI((char *, char *));
  1262. time_t Do_time ANSI(());
  1263. int Do_cmnd ANSI((char *, int, int, CELLPTR, int, int, int));
  1264. char ** Pack_argv ANSI((int, int, char *));
  1265. char * Read_env_string ANSI((char *));
  1266. int Write_env_string ANSI((char *, char *));
  1267. void ReadEnvironment ANSI(());
  1268. void Catch_signals ANSI((void (*)()));
  1269. void Clear_signals ANSI(());
  1270. void Prolog ANSI((int, char* []));
  1271. void Epilog ANSI((int));
  1272. char * Get_current_dir ANSI(());
  1273. int Set_dir ANSI((char*));
  1274. char Get_switch_char ANSI(());
  1275. FILE* Get_temp ANSI((char **, char *, int));
  1276. FILE * Start_temp ANSI((char *, CELLPTR, char **));
  1277. void Open_temp_error ANSI((char *, char *));
  1278. void Link_temp ANSI((CELLPTR, FILE *, char *));
  1279. void Close_temp ANSI((CELLPTR, FILE *));
  1280. void Unlink_temp_files ANSI((CELLPTR));
  1281. void Handle_result ANSI((int, int, int, CELLPTR));
  1282. void Update_time_stamp ANSI((CELLPTR));
  1283. int Remove_file ANSI((char *));
  1284. void Parse ANSI((FILE *));
  1285. int Get_line ANSI((char *, FILE *));
  1286. char * Do_comment ANSI((char *, char **, int));
  1287. char * Get_token ANSI((TKSTRPTR, char *, int));
  1288. void Quit ANSI(());
  1289. void Read_state ANSI(());
  1290. void Write_state ANSI(());
  1291. int Check_state ANSI((CELLPTR, STRINGPTR *, int));
  1292. char* basename ANSI((char *));
  1293. void Dump ANSI(());
  1294. void Dump_recipe ANSI((STRINGPTR));
  1295. int Parse_macro ANSI((char *, int));
  1296. int Macro_op ANSI((char *));
  1297. int Parse_rule_def ANSI((int *));
  1298. int Rule_op ANSI((char *));
  1299. void Add_recipe_to_list ANSI((char *, int, int));
  1300. void Bind_rules_to_targets ANSI((int));
  1301. int Set_group_attributes ANSI((char *));
  1302. DFALINKPTR Match_dfa ANSI((char *));
  1303. void Check_circle_dfa ANSI(());
  1304. void Add_nfa ANSI((char *));
  1305. char * Exec_function ANSI((char *));
  1306. time_t seek_arch ANSI((char *, char *));
  1307. int If_root_path ANSI((char *));
  1308. void Remove_prq ANSI((CELLPTR));
  1309. int runargv ANSI((CELLPTR, int, int, int, int, char *));
  1310. int Wait_for_child ANSI((int, int));
  1311. void Clean_up_processes ANSI(());
  1312. X
  1313. #endif
  1314. SHAR_EOF
  1315. chmod 0640 dmake/unix/sysvr1/public.h ||
  1316. echo 'restore of dmake/unix/sysvr1/public.h failed'
  1317. Wc_c="`wc -c < 'dmake/unix/sysvr1/public.h'`"
  1318. test 5448 -eq "$Wc_c" ||
  1319.     echo 'dmake/unix/sysvr1/public.h: original size 5448, current size' "$Wc_c"
  1320. rm -f _shar_wnt_.tmp
  1321. fi
  1322. # ============= dmake/unix/sysvr1/putenv.c ==============
  1323. if test -f 'dmake/unix/sysvr1/putenv.c' -a X"$1" != X"-c"; then
  1324.     echo 'x - skipping dmake/unix/sysvr1/putenv.c (File already exists)'
  1325.     rm -f _shar_wnt_.tmp
  1326. else
  1327. > _shar_wnt_.tmp
  1328. sed 's/^X//' << 'SHAR_EOF' > 'dmake/unix/sysvr1/putenv.c' &&
  1329. /* RCS      -- $Header: /u2/dvadura/src/generic/dmake/src/unix/sysvr1/putenv.c,v 1.1 1992/01/24 03:28:26 dvadura Exp $
  1330. -- SYNOPSIS -- my own putenv for BSD like systems.
  1331. -- 
  1332. -- DESCRIPTION
  1333. --     This originally came from MKS, but I rewrote it to fix a bug with
  1334. --    replacing existing strings, probably never happened but the code
  1335. --    was wrong nonetheless.
  1336. --
  1337. -- AUTHOR
  1338. --      Dennis Vadura, dvadura@watdragon.uwaterloo.ca
  1339. SHAR_EOF
  1340. true || echo 'restore of dmake/unix/sysvr1/putenv.c failed'
  1341. fi
  1342. echo 'End of part 37, continue with part 38'
  1343. echo 38 > _shar_seq_.tmp
  1344. exit 0
  1345. exit 0 # Just in case...
  1346.